1 module fswatch_helpers;
2 
3 version(Windows)
4 {
5     size_t timeLastModified(const(wchar)* filePath)
6     {
7         import core.sys.windows.winbase;
8         import core.sys.windows.winnt;
9         import core.sys.windows.basetsd;
10 
11         HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
12         if(hFile == INVALID_HANDLE_VALUE)
13             return 0;
14 
15         FILETIME ftCreate, ftAccess, ftWrite;
16 
17         scope(exit) CloseHandle(hFile);
18 
19 
20         if(!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
21             return 0;
22 
23         ULARGE_INTEGER lastModTime;
24 
25         lastModTime.LowPart = ftWrite.dwLowDateTime;
26         lastModTime.HighPart = ftWrite.dwHighDateTime;
27 
28         return lastModTime.QuadPart;
29     }
30 
31     string winGetCwd()
32     {
33         import hip.util.file:getcwd;
34         return getcwd;
35     }
36 
37     bool winExists(const(wchar)* filePath)
38     {
39         import core.sys.windows.winnt;
40         import core.sys.windows.winbase;
41 
42         DWORD fileAttr = GetFileAttributes(filePath);
43 
44         return fileAttr != INVALID_FILE_ATTRIBUTES;
45     }
46 
47     bool winIsDir(const(wchar)* path)
48     {
49         import core.sys.windows.winnt;
50         import core.sys.windows.winbase;
51         DWORD fileAttr = GetFileAttributes(path);
52         if (fileAttr == INVALID_FILE_ATTRIBUTES)
53             return false;
54 
55         return (fileAttr & FILE_ATTRIBUTE_DIRECTORY) != 0;
56     }
57 
58 
59 }